package com.lynn.common.net.exception

import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.functions.Function

/**
 * @description: 针对网络异常的处理，服务端返回的就是异常信息
 * @author: bailing
 * @datetime: 2025/5/27 13:36
 **/
class HttpErrorHandler<T : Any> : Function<Throwable, Observable<T>> {

    /**
     * 处理以下两类网络错误：
     * 1、http请求相关的错误，例如：404，403，socket timeout等等；
     * 2、应用数据的错误会抛RuntimeException，最后也会走到这个函数来统一处理；
     */
    override fun apply(t: Throwable): Observable<T> {
        //通过这个异常处理，得到用户可以知道的原因
        return Observable.error(ExceptionHandle.handleException(t));
    }
}